name: Intl/Emoji data

on:
  push:
    paths:
      - 'src/Symfony/Component/Emoji/*.php'
      - 'src/Symfony/Component/Emoji/Resources/data/**'
      - 'src/Symfony/Component/Emoji/Tests/*Test.php'
      - 'src/Symfony/Component/Intl/*.php'
      - 'src/Symfony/Component/Intl/Util/GitRepository.php'
      - 'src/Symfony/Component/Intl/Resources/data/**'
      - 'src/Symfony/Component/Intl/Tests/*Test.php'
      - 'src/Symfony/Component/Intl/Tests/Util/GitRepositoryTest.php'
  pull_request:
    paths:
      - 'src/Symfony/Component/Emoji/*.php'
      - 'src/Symfony/Component/Emoji/Resources/data/**'
      - 'src/Symfony/Component/Emoji/Tests/*Test.php'
      - 'src/Symfony/Component/Intl/*.php'
      - 'src/Symfony/Component/Intl/Util/GitRepository.php'
      - 'src/Symfony/Component/Intl/Resources/data/**'
      - 'src/Symfony/Component/Intl/Tests/*Test.php'
      - 'src/Symfony/Component/Intl/Tests/Util/GitRepositoryTest.php'

defaults:
  run:
    shell: bash

concurrency:
    group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
    cancel-in-progress: true

permissions:
  contents: read

jobs:
  tests:
    name: Intl/Emoji data
    runs-on: Ubuntu-20.04

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Install system dependencies
        run: |
          echo "::group::apt-get update"
          sudo apt-get update
          echo "::endgroup::"

          echo "::group::install tools & libraries"
          sudo apt-get install icu-devtools
          echo "::endgroup::"

      - name: Define the ICU version
        run: |
          SYMFONY_ICU_VERSION=$(php -r 'require "src/Symfony/Component/Intl/Intl.php"; echo Symfony\Component\Intl\Intl::getIcuStubVersion();')
          echo "SYMFONY_ICU_VERSION=$SYMFONY_ICU_VERSION" >> $GITHUB_ENV

      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          coverage: "none"
          extensions: "zip,intl-${{env.SYMFONY_ICU_VERSION}}"
          ini-values: "memory_limit=-1"
          php-version: "8.2"

      - name: Install dependencies
        run: |
          COMPOSER_HOME="$(composer config home)"
          ([ -d "$COMPOSER_HOME" ] || mkdir "$COMPOSER_HOME") && cp .github/composer-config.json "$COMPOSER_HOME/config.json"
          export COMPOSER_ROOT_VERSION=$(grep ' VERSION = ' src/Symfony/Component/HttpKernel/Kernel.php | grep -P -o '[0-9]+\.[0-9]+').x-dev
          echo COMPOSER_ROOT_VERSION=$COMPOSER_ROOT_VERSION >> $GITHUB_ENV

          echo "::group::composer update"
          composer update --no-progress --ansi
          echo "::endgroup::"

          echo "::group::install phpunit"
          ./phpunit install
          echo "::endgroup::"

      - name: Report the ICU version
        run: uconv -V && php -i | grep 'ICU version'

      - name: Run intl-data tests
        run: ./phpunit --group intl-data -v

      - name: Test intl-data with compressed data
        run: |
          [ -f src/Symfony/Component/Intl/Resources/data/locales/en.php ]
          [ ! -f src/Symfony/Component/Intl/Resources/data/locales/en.php.gz ]
          src/Symfony/Component/Intl/Resources/bin/compress
          [ ! -f src/Symfony/Component/Intl/Resources/data/locales/en.php ]
          [ -f src/Symfony/Component/Intl/Resources/data/locales/en.php.gz ]
          ./phpunit src/Symfony/Component/Intl

      - name: Run Emoji tests
        run: ./phpunit src/Symfony/Component/Emoji -v

      - name: Test Emoji with compressed data
        run: |
          [ -f src/Symfony/Component/Emoji/Resources/data/emoji-en.php ]
          [ ! -f src/Symfony/Component/Emoji/Resources/data/emoji-en.php.gz ]
          src/Symfony/Component/Emoji/Resources/bin/compress
          [ ! -f src/Symfony/Component/Emoji/Resources/data/emoji-en.php ]
          [ -f src/Symfony/Component/Emoji/Resources/data/emoji-en.php.gz ]
          ./phpunit src/Symfony/Component/Emoji
